/* PR c/102989 */
/* { dg-do run { target bitint } } */
/* { dg-options "-std=c23 -pedantic-errors" } */
/* { dg-skip-if "" { ! run_expensive_tests }  { "*" } { "-O0" "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */

#if __BITINT_MAXWIDTH__ >= 259
struct S259 { unsigned _BitInt(259) c, d; } s259[2];
unsigned _BitInt(259) v259;

__attribute__((noipa)) void
test259 (unsigned _BitInt(259) a, unsigned _BitInt(259) *b, int i, int *j)
{
  s259[0].c = a + (b[0] - b[i + 1]) + (b[2] << 7) - (b[3] + 42);
  s259[i].d = (a | (b[4] & b[5])) ^ b[6 + i];
  j[0] = s259[1 - i].d == 0;
  j[1] = b[7] == 853796348253166026572322331766419194644297857346047602312235759502541501989541uwb;
  if (b[8] != (b[9] << 25))
    b[10] = -1;
  v259 = b[11] + 131672585462768721291717421546274215675860478844820049742378853291513419577293uwb;
  b[12] = ~b[13];
  b[14] = -b[i + 13];
}

__attribute__((noipa)) void
check259 (void)
{
  static unsigned _BitInt(259) b[] = {
    918480562371960593090410127982602516965623024307296422252015063457072276190019uwb,
    805591267508470730905808815897672235976825560202638463105454632689132956230159uwb,
    918331245995907029502562304060195532137531507866437159352108797919955179870191uwb,
    813875127751611422577721650805025403235043641932299023318765404699420543383496uwb,
    312693756633721376836885884755241545403854394304071110713260437525889451361210uwb,
    649538941042539125892439630557027126879421922847150643068762916100064243451309uwb,
    773306487188996490948079630445764609771546927800966605886964877358699258715670uwb,
    853796348253166026572322331766419194644297857346047602312235759502541501989541uwb,
    76083267877106286558555438489752654093377337000667150108584195505702104870323uwb,
    433731305334336103344926930540791423313226370883401849111287164916738117506640uwb,
    57656267431091314368862950118941867863238118931858464589826085330125773498121uwb,
    64173041359832501449385133817329349658818599309611908558002991010875611848746uwb,
    42346589146173514762997245981921905757283138481803437257678854533030144461674uwb,
    61227931681037412178262565289688995250776671963152062289442760797238154015232uwb,
    0uwb
  };
  int j[2];
  unsigned _BitInt(259) a
    = 466268672176961050215569613615746490713100259736768099838759141406021022194231uwb;
  s259[1].d = 289647636390911494735348665819031670280022785262945335571175835860869121921853uwb;
  test259 (a, b, 0, &j[0]);
  if (s259[0].c != 593256375550214279190871305843268365974742545847394880963235621252368145099513uwb
      || s259[0].d != 258470741923291377781882672832254987468877297321140017579156131137149865493929uwb
      || j[0] != 0
      || j[1] != 1
      || v259 != 195845626822601222741102555363603565334679078154431958300381844302389031426039uwb
      || b[10] != 926336713898529563388567880069503262826159877325124512315660672063305037119487uwb
      || b[12] != 865108782217492151210305314779814267575383205361972450026217911266066883104255uwb
      || b[14] != 865108782217492151210305314779814267575383205361972450026217911266066883104256uwb)
    __builtin_abort ();
  static unsigned _BitInt(259) c[] = {
    280836731241256517108451767043891202691471765896401168847540724952507405972497uwb,
    840411222605516639870988613734990053662001382735609723401814266406994078815101uwb,
    315675972612806440596502686972210055502484407915611896031513380334465695474313uwb,
    203899119027212320906468030526379653925169232409139699654080707114835986996999uwb,
    128451577752218373908172046011152144714641252063864956677744337179480421046978uwb,
    287567473759168733146788470777196081514207657452235204870489646221804917429977uwb,
    750296306916736952737909920532226142314659927184810908344954406682013838424980uwb,
    656663422127941740082895518453608245693505586454580487767696297787796578828932uwb,
    879879542531872983872988522489746684941859186676324312036446053929728989986816uwb,
    26222453788872748132735148742489417938645457824359068633212031541160613uwb,
    721087878418777615469711741435156333032292047533740164381818331009890349325379uwb,
    441184423645775123821015863267700095523103297061220954332335218574744406423193uwb,
    84779661426980563874304295256885870100654945451373784779121036518843563800060uwb,
    720201829457536541913713975070870089885671802608506320469648510576137739651426uwb,
    0uwb
  };
  a = 18070271922856865288654809596744903817727150511379287511935119712627107404963uwb;
  s259[1].d = 0;
  test259 (a, c, 0, &j[0]);
  if (s259[0].c != 754979172232367155652142901903016464541317666806124208079545327296101909258886uwb
      || s259[0].d != 726067720449610868402876758678941562623370067217056480941991810113614143071607uwb
      || j[0] != 1
      || j[1] != 0
      || v259 != 572857009108543845112733284813974311198963775906041004074714071866257826000486uwb
      || c[10] != 721087878418777615469711741435156333032292047533740164381818331009890349325379uwb
      || c[12] != 206134884440993021474853904998633172940488074716618191846012161487167297468061uwb
      || c[14] != 206134884440993021474853904998633172940488074716618191846012161487167297468062uwb)
    __builtin_abort ();
}
#endif

#if __BITINT_MAXWIDTH__ >= 508
struct S508 { unsigned _BitInt(508) c, d; } s508[2];
unsigned _BitInt(508) v508;

__attribute__((noipa)) void
test508 (unsigned _BitInt(508) a, unsigned _BitInt(508) *b, int i, int *j)
{
  s508[0].c = a + (b[0] - b[i + 1]) + (b[2] << 7) - (b[3] + 42);
  s508[i].d = (a | (b[4] & b[5])) ^ b[6 + i];
  j[0] = s508[1 - i].d == (unsigned _BitInt(508)) -1;
  j[1] = (b[7] - b[6]) == 323515224000201027366899758000237142291440124580568781353226908396916757538679852963577209476426722029505026752120305126905670783187399192585916919546571uwb;
  if (b[8] != (b[9] << 25))
    b[10] = -1;
  v508 = b[11] + 716024231508310591151659913627069746319678908481108351681014830741662356869311236055018626572200723297424975249553920015269741669328444662913268383663677uwb;
  b[12] = ~b[13];
  b[14] = -b[i + 13];
}

__attribute__((noipa)) void
check508 (void)
{
  static unsigned _BitInt(508) b[] = {
    832078183434045927540487103804907011739266549356223191691643561067749769975943908404638920166502402329694585519922110244852912407804057166046933883008194uwb,
    713936147229868929139293139988718979167626862529198392930772721993480948457421027732398866594698271934473685041618760204074421885407508961194284075992372uwb,
    617361847118081522653471977724056261996473287264427111568008587684000569753190215945768169015576241392153003921766059387579429385226558246856562678192104uwb,
    558345641413420470280223467353393511714120008866888151814287282910208158712080338084981427985120538158019424401062183786473300529579273867747687575759264uwb,
    499761439373420902958682462789094939629857960756907734602342350501615831252037617149223977152737393272833291045861050465948469241674239312800301147123184uwb,
    41458778840616754230715683890502356563717287755866620113981050014317462591845066532973853075702831495501272233490672301990969026267150137016150650508199uwb,
    418458681135681746732437152058641717690726059977788598152959959313259063414620594315807075298922056786187386710006952502872115288914005302859339669672594uwb,
    178590258028275731715530947756428839232212382672258470295756987295058447444774755851491768941934611483011083453873652899758014544959831694913681677646689uwb,
    356770203054529564617317933555709062197425817471944056561734674021988369183029131819074076937899959445814817800565023050865025285444839826004948142681410uwb,
    584112461551758657888253754473884153359686350173736669541862380483308304473624923065781205318194340854082383073991675143564628127579536789385040891716043uwb,
    680157864635886168227443104616994718021643051017205364932604743260844971234200794270551054794576522886616288751944237137476474081129540389630063933035924uwb,
    624234678396543393542036481071764142163163163113602945911969155623637623734341260164471554708546709676358706745261925658188877241381613170733888758848256uwb,
    454784507207582406161930055875861559038811204428592354757758685948743133937531828752051902975778637734147167150365830445107092680154259745175825282331123uwb,
    319986047127156205965562926466827182744423938150941443628321307635789163001042001590072115090024768392582441327268266695557745771318045725281606272507745uwb,
    0uwb
  };
  int j[2];
  unsigned _BitInt(508) a
    = 711291826680524221552366807721297346517830107349701196208230744872277012932938686554048942571552181657477920414828724120656294188547596916447951866844703uwb;
  s508[1].d = 44300483028507681832691655975564116229472905643882332053402780694878295874197390896801387042830042144560060996721375070892413197614373985836807183707843uwb;
  test508 (a, b, 0, &j[0]);
  if (s508[0].c != 522533064172957689320353588403947403982656359176197029733990042723046927465640381488621700421437034411326731632519943219324383970178228415895248995946467uwb
      || s508[0].d != 544171514892154666305054228710247267670694798806087644332682606744854247388929324492327007054644882499782210854566003344906189740262758953265414281741613uwb
      || j[0] != 0
      || j[1] != 0
      || v508 != 502270914283441665970319832310968505515381707807686711485261396132689728724055810169373037645315968743156690858160467495099001234963397211995054079631677uwb
      || b[10] != 837987995621412318723376562387865382967460363787024586107722590232610251879596686050117143635431464230626991136655378178359617675746660621652103062880255uwb
      || b[12] != 518001948494256112757813635921038200223036425636083142479401282596821088878554684460045028545406695838044549809387111482801871904428614896370496790372510uwb
      || b[14] != 518001948494256112757813635921038200223036425636083142479401282596821088878554684460045028545406695838044549809387111482801871904428614896370496790372511uwb)
    __builtin_abort ();
  static unsigned _BitInt(508) c[] = {
    647557698892184285650475800644782894130830134743039316064874048572238802447391019320461822795528468837172509913850428906715002084926186679743636685547834uwb,
    19893833808289543304534784415999074892775857443659529983103990809804459295154825463722400943836101951812379338522524133647269361956787413321377320775949uwb,
    167225090603369392131840179341189845624248307670461180275627141145612180756017010718187841360639781066493394970424816391919242343853725482848930838565833uwb,
    425038857255644658246682026149139094877872271690333163307937973752297810646903055053327010856106694556745086838630642887918900506053243909959679540607590uwb,
    710399860501404196180909731021634278197730505954614106387836731661196474327340462005364906935941520263965559590135721186838498741274345456365502514761552uwb,
    517100391187257228299118348633309855520848206928211390424040909382822545139910418018096605353580518981578830214711288569084195564658992133538762776045012uwb,
    337049882664509041243030742301206305462316697436525762870825130294272111721357923024083663351305745791606079615492796115999045732841532642628230422676768uwb,
    660565106664710068609930500301443447753756822017094544224052038691188869260037775987660872827732467821111106367613101242904716516028931835214147342223339uwb,
    264311519140803818482685788811186614544730978154943534367495114584051059508245461660412877555306257793689596804946554756871772168758950748494862728822784uwb,
    7877097104215735747894221210813123421213954036085114907249662714721294030792875935447599814990349346211242580561237178947680359147755823984589062uwb,
    67442667089892250469544199468501425015399920231234867688030078116216928480132993764590084699986918086331763703967003811392074730155208796825341891897256uwb,
    85129756049329066391994997807963865671611392223804816975886973237646888963379984739504507746795881579055447505908308844315081721803505794221196177586220uwb,
    707371868440287371388093572489945370955349752876981733417655198143352744491182974880452293708290631899668322081620029303621428033853319295154190475832548uwb,
    538419296440305382227520128849893548498555312954035671105518356624711212650496087782309622044337222159048223665137702366210806405686462563977378378472852uwb,
    0uwb
  };
  a = 708586050532895903124837960170867540022772026063196035415656948205052808113573236752572838768221960601298200594769808975966326249462737081924621284351278uwb;
  s508[1].d = -1;
  test508 (a, c, 0, &j[0]);
  if (s508[0].c != 528334769435707893291849283838312547132767955028634494668975752805681928519569910180983209404481539444766030992803736389428118910242578080095668810055499uwb
      || s508[0].d != 626861153942807538339962839367652023698436836743736597401578432880275274177104419034373833881253982548479037772997711030061561577382993299825586823026782uwb
      || j[0] != 1
      || j[1] != 1
      || v508 != 801153987557639657543654911435033611991290300704913168656901803979309245832691220794523134318996604876480422755462228859584823391131950457134464561249897uwb
      || c[10] != 67442667089892250469544199468501425015399920231234867688030078116216928480132993764590084699986918086331763703967003811392074730155208796825341891897256uwb
      || c[12] != 299568699181106936495856433537971834468905050832988915002204233607899039229100598267807521591094242071578767471517675812148811270060198057674724684407403uwb
      || c[14] != 299568699181106936495856433537971834468905050832988915002204233607899039229100598267807521591094242071578767471517675812148811270060198057674724684407404uwb)
    __builtin_abort ();
}
#endif

#if __BITINT_MAXWIDTH__ >= 512
struct S512 { unsigned _BitInt(512) c, d; } s512[2];
unsigned _BitInt(512) v512;

__attribute__((noipa)) void
test512 (unsigned _BitInt(512) a, unsigned _BitInt(512) *b, int i, int *j)
{
  s512[0].c = a + (b[0] - b[i + 1]) + (b[2] << 15) - (b[3] - 259wb);
  s512[i].d = (a | (b[4] & b[5])) ^ b[6 + i];
  j[0] = s512[1 - i].d == 4522353484324747955267125937291948655749617973066893955369024131525488299108320993071208813642361430492411037439152575330738596343613170269621629934531241uwb;
  j[1] = (b[7] - b[6]) == 374577815990281408677256593783629954432691286119512435557712294960563169554809756081207157974945869359369961439855092584877150233312923919236788786326875uwb;
  if (b[8] != (b[9] << 63))
    b[10] = -1;
  v512 = b[11] + 105302399496355811946685122261964785380738245520086820947909580844925217183297uwb;
  b[12] = ~b[13];
  b[14] = -b[i + 13];
}

__attribute__((noipa)) void
check512 (void)
{
  static unsigned _BitInt(512) b[] = {
    6021199531765212801884676816470799034908236595092557744734057443805875347290483033829674243182977894869999446238486916822395301604705319217995654295432902uwb,
    2118944847509270465197760108216002226005910220953364492400962085188310835486567249208768553765555672830161371433385656186687932945648641289635143624153621uwb,
    2468011621780240906908738384251283152842243623265843874579649124218711735704146024693879862235081238297926460688162588400193067305227164327914340959869992uwb,
    7852261253584637784169919081877553866282673859198296203117153724887988256894439079095114803178078464315049063160714347766105329320309211116124084359320890uwb,
    6881429107351001058295162119545491230166185795246928525617516768009088834586165228975554760023030849264752345389888178729929909699157633918182461033495556uwb,
    7490938212743615293405934133782451317533822019734363666709765080515130781799097345699393688357934162148290248912225980297047575683793284504381422978757040uwb,
    10120569572654605122639402565568718563995238635532261987812601502126969028367382422209505735533685455107591090283702679606268593966759672963076962700307022uwb,
    6544115361584477201664859993249450245040478983518054359791236989888339451701690370158568050118785002344520392336988100105900733099550716973249399480839328uwb,
    7998211385715595185432216755958202893898483475426306631076103969688188023218591677753885970448355780373235280537235089173590925156414399326886601942858952uwb,
    1101608905235198391935063146859712526167216410759556463737474438201976460429148065105316982180322610546500122551969559689893274021338053420958788359583115uwb,
    5547339070657168956577880025794227235978722359584966491999832792960847505505357241452219444649567336517274817160074290099346053369308053580179899142505418uwb,
    1750269279776476441267578744631933548060353310561690992260040183595109596951578483669111308170823694772335056351746927981021331305166802991213646334514404uwb,
    4192336828386954798960532308463588917660266569128375313949004426859425573394438991510991296156896119249870038323974327749964728970306928745553011492449651uwb,
    1900177384209047479231940933911260783674256383613355641699143750453309311902806908717431412257630234621978137884266303399427482666060857148046946256701407uwb,
    0uwb
  };
  int j[2];
  unsigned _BitInt(512) a
    = 10930130497064002394702882970302938462793108526726281176439996378763909442554754292732278993783426604574021331155984114583431563021614093376741477610729300uwb;
  s512[1].d = 1062548863735806614766555155689890005619504886385354582078741512313209800319722918322963204342249477855349130571262241563029708157593686639667293170464985uwb;
  test512 (a, b, 0, &j[0]);
  if (s512[0].c != 2887513008923639902240466565062692784517178403522406023075811881559011847285804098407629056403311082480905591628208975136041938382372340398331672243318734uwb
      || s512[0].d != 972130803422634759391069517910461958937573607139260059384360471797756640789653835842301525452796103317707145350644624256211972219907968589876206212846874uwb
      || j[0] != 0
      || j[1] != 0
      || v512 != 1750269279776476441267578744631933548060353310561690992260040183595109596951683786068607663982770379894597021137127666226541418126114712572058571551697701uwb
      || b[10] != 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095uwb
      || b[12] != 11507630545733549620342084064294585343805109436979037736024417693268454718170740068084442885909273193068053720302219747454326400145885712798386702749382688uwb
      || b[14] != 11507630545733549620342084064294585343805109436979037736024417693268454718170740068084442885909273193068053720302219747454326400145885712798386702749382689uwb)
    __builtin_abort ();
  static unsigned _BitInt(512) c[] = {
    4310457364893777373602665157014873559135384447597675565065759273827483949324526981781306465942744538806150653124143200561193417791157963881792904451069362uwb,
    5958789020370015340565416950487013712033450466320460334048228974568661716557882588498670105211169302921483448876614084424938615986458325610065852828118306uwb,
    8284743202872517242207866690683488538720128091867223206119391935721931034359590521893173196995749495634003248491356217756384997245149844917613657244100946uwb,
    12664079984606974422077559239355618815941897900272441909795959033933251997534364342568914887960377305762259523811571861079808666818626009150755656127832627uwb,
    1277280061505669581991258509578719709995272247404983496353130395005685346463372196431685623256422418143892881140710485556437791815840558839002633040897782uwb,
    12215250731983666777320125323169237871547944066095330125912513738032966095255991063167892594205142430862706904005862880547898319287711754622854549074643186uwb,
    9251003287718566323105383813392168970560299412448652319116761599247007001244197366325250786747301353984616744521839526461090225556617577043580629233001099uwb,
    9625581103708847731782640407175798924992990698568164754674473894207570170799007122406457944722247223343986705961694619045967375789930500962817418019327974uwb,
    9625581103708847731782640407175798924992990698568164754674473894207570170799007122406457944722247223343986705961694619045967375789930495977475637258485760uwb,
    1043607594407655227216500911938969602142764645410552381359002950524059754591300096857049049719237072025508574484388968507628527351266845uwb,
    11998753448729239344000141538200052195237540636029454316657436691685826543599848607581685084378245778577663489979887014434647868686320656434403040763612551uwb,
    11434040832182557441766779829155897224389793286294752961027160601623012283276511030063398944055141766189843896068181650049692814441787333867085760205626564uwb,
    3023331158039332614691238368394682484299421409956298474635469941534054266475913779087200438226804802431840397460566948014999950457892777550113994388831586uwb,
    6643992699881938834553303739293839845351896246066261353792165016004958058241209888845214001951224186762526613611217678738912897449639764896432567428225735uwb,
    0uwb
  };
  a = 8297086167455412951314345399041666622690871902388991853000149614722648899348042581378229717518281695539366926410544760114561024579207473131456671312516393uwb;
  s512[1].d = 4522353484324747955267125937291948655749617973066893955369024131525488299108320993071208813642361430492411037439152575330738596343613170269621629934531241uwb;
  test512 (a, c, 0, &j[0]);
  if (s512[0].c != 562788706253718154365616008999801360288452754375064525508119581728036130536904720042355361715252120605188469823973820439731595153197657174657215322741897uwb
      || s512[0].d != 2450664880034868237736952350867106482818480521222495256778680955285041346939852822760111651975591771880097571588399256063032055281563320405249761438168944uwb
      || j[0] != 1
      || j[1] != 1
      || v512 != 11434040832182557441766779829155897224389793286294752961027160601623012283276616332462895299867088451312105860853562388295212901262735243447930685422809861uwb
      || c[10] != 11998753448729239344000141538200052195237540636029454316657436691685826543599848607581685084378245778577663489979887014434647868686320656434403040763612551uwb
      || c[12] != 6763815230060658265020721258912006282127469574526132023931396427716805971832337087956660296215679240927505244575268372114840985362306805050001081577858360uwb
      || c[14] != 6763815230060658265020721258912006282127469574526132023931396427716805971832337087956660296215679240927505244575268372114840985362306805050001081577858361uwb)
    __builtin_abort ();
}
#endif

#if __BITINT_MAXWIDTH__ >= 575
struct S575 { unsigned _BitInt(575) c, d; } s575[2];
unsigned _BitInt(575) v575;

__attribute__((noipa)) void
test575 (unsigned _BitInt(575) a, unsigned _BitInt(575) *b, int i, int *j)
{
  s575[0].c = a + (b[0] - b[i + 1]) + (b[2] << 27) - (b[3] + 4958475968475894375894357484535984375489wb);
  s575[i].d = (a | (b[4] & b[5])) ^ b[6 + i];
  j[0] = s575[1 - i].d == 95573020206290249524150023772890126071219633117171019262766503336310672999410172030736216511031014256906040106668955921896748704905692143264499542165901631357858279597168868uwb;
  j[1] = (b[7] - b[6]) == 27145700341365416267735847217275690336177396856349392593186862163108423829551399123342676161793491631779988040463555034191451268734796110296927769088083654195518127550378112uwb;
  if (b[8] != (b[9] << 42))
    b[10] = -1;
  v575 = b[11] + 23747340451678047735163360653763407761482933548732248545666538557842792154643066748753917518601117103336304219106042161459437965550611189291922027839274834493025750978734016uwb;
  b[12] = ~b[13];
  b[14] = -b[i + 13];
}

__attribute__((noipa)) void
check575 (void)
{
  static unsigned _BitInt(575) b[] = {
    109629911866606562961096883957886177157168492273877379264846777289230149818443125999912223814388744273336157512735477622882702153104102811897060843654669684146016128756706531uwb,
    49737336835254330810961852329841465152166265671267895624334663745208596732097722057750738167775257956975985814734408710423060394871412870929476144910662495171305515147160358uwb,
    38554548935224072640061799348846572892670189944581591586656577942689453406789240916780049368436228529892778822796853383245767382205374048871923124561885190260824233296311215uwb,
    71058269942432013527315378010985114704370555413208353814319452373530227298981545120481154232525349782777377989106743248998743352091363716737509221664926215529843633715687782uwb,
    4160385932463020068352363207252688161266437324266506898550050263305674040252431030407032416831730109735167157770872898962184845623991414528191955840335425228637597057146575uwb,
    92940635878626680004989100258386964603204572877596438304889779253809889656868292370355114313083957669380421733891295145627252962536732023763637134129797695217583987460880286uwb,
    2497863814760324764248624507199774997376419692946013954829621482125467045874636227196983588067358574709667157879971660264026959433911373287725284674927778585806087674600393uwb,
    39669551656169181196901167730139627329430801053972757381518801156276770602506281629333177027704798069522455806177708556852756692341281267078419473323939938196300261349249844uwb,
    34099204187046170921511393567690620643856679870121903412545567510502014273081623781684214852562822343760228918685024070983005024483424026237793838354204070380961780255948800uwb,
    7753261385697935775513404580053843493227914193567335908607121271075360317145537870074853083807016069786238612933862912310133884712609875859423900318280191272825uwb,
    110004311053786619259986678143505471501869971439303158252331533020072292936027495587470733973742054917424528022233289606593259788774806137554470308009293095009499747765639537uwb,
    96833004631961538015767463838833105015474376492192681907732908245833058438294860656404685183010591497179132293246891860908865398765545161691520277203799562157174917228796219uwb,
    80702609348091643417538298383109408004428354134511559457823339372643632518010615100071083122949651809745536686693833088575054309697466950053942939485340693253073606951812769uwb,
    33407553983903825388268227905051448847634610694178184538233348977258089995501154824364933504268463263804419263252997491873433785923300213087774501277469095977333397324099995uwb,
    0uwb
  };
  int j[2];
  unsigned _BitInt(575) a
    = 37458390908651944486318701298774946253221298284079678879752196062749754015767054813622389341442171327838532365078549465402085621913002861059272532398763941224574356382919877uwb;
  s575[1].d = 95573020206290249524150023772890126071219633117171019262766503336310672999410172030736216511031014256906040106668955921896748704905692143264499542165901631357858279597168868uwb;
  test575 (a, b, 0, &j[0]);
  if (s575[0].c != 71835056112914750846225746791835613082740285561642802348494468629675719606761159266011893596664019145187589550627068973430325671456228503438760044269704956730966806603380315uwb
      || s575[0].d != 35092678436051398145450456092160957085574382283207240091541444540207322324444176804583959098631686867119531362746451350477963519431922701372937009164511004298364112449348870uwb
      || j[0] != 1
      || j[1] != 0
      || v575 != 120580345083639585750930824492596512776957310040924930453399446803675850592937927405158602701611708600515436512352934022368303364316156350983442305043074396650200668207530235uwb
      || b[10] != 110004311053786619259986678143505471501869971439303158252331533020072292936027495587470733973742054917424528022233289606593259788774806137554470308009293095009499747765639537uwb
      || b[12] != 90257646752648441641983032604772146169931063856427735418798179069190522557764778760793267026353059230994416449755072177802248731230075391895998576273477487980969988750249572uwb
      || b[14] != 90257646752648441641983032604772146169931063856427735418798179069190522557764778760793267026353059230994416449755072177802248731230075391895998576273477487980969988750249573uwb)
    __builtin_abort ();
  static unsigned _BitInt(575) c[] = {
    82504361427244542991820094956691549960754114745978822099335511938351682595536290531725259255179129363075052806202441257721202109466202003805606931995490008444343669600699853uwb,
    42079105016133747306704896727331693360594255070597992997150557389990664988368628699356162986776491822580146238976269442994821141806156379826188754250358560351182286381406736uwb,
    711769802844526498820507696850878181897548931161560217731770512934668229904523420294613194965001881326982097300327085293326593185529346399uwb,
    89175170277971754813127791070754356690231836881294855904530631438372575707050409381165002268066908066508189405070930638781220028058233443902931422213686026604811589591935872uwb,
    94050888747959189678836802993335292608994888939368012114118213842817585341848237784852826131167319219605431056321492019432538459246136124892413917192336008119041481208682712uwb,
    38239296209217737134837463059250986563276353222124626638871007389306434648840299613965667293607942327919361664341059433984563767109851991087195673676603874741464175459967356uwb,
    97333559006669714102408081289832637446384482871277430301688457830360630424953635234987417481437096537137502568526675247478692954009451991021793982942577536513823999917011895uwb,
    814058611482863339892667997284732764996205177020902937843791947020441701239100773171893112609065674118654895982160611994461705590872496334948674479714606751038741393040439uwb,
    97705579217072075210280690501837541720113857756901619907589735305607760170945080008347962500870233338612695073361639697585534957702253004388475713115759324045158713339246602uwb,
    10982982241715500518624383020617613623499620192753751475894180095116406586056643710374985626416110420394932716762424522515613555006307631143920933236927136144852926571503121uwb,
    55829504657908340201404797796793782979617205764045686020250304202907511578861596703885712251150659580577184194460916884943183841026041393794213790496185940144912189048827888uwb,
    100875306823715847300644682553337559470837966294108010157772959400031914000172409603541204719305055682465391367527242389796209306256295618004852296452270010541263847504922010uwb,
    15279010635266215057483690428202871735658936908535846754770399078825578981747757698046709583412828936255448971025234637952103022364332558473695317217263761931457640744952794uwb,
    48444770867335255303325633099437372188650970089231857000193390748362558989590160188759337817835818168773038925935268431818011879469195339807606486208276196817195956747180163uwb,
    0uwb
  };
  a = 8297086167455412951314345399041666622690871902388991853000149614722648899348042581378229717518281695539366926410544760114561024579207473131456671312516393uwb;
  s575[1].d = 4522353484324747955267125937291948655749617973066893955369024131525488299108320993071208813642361430492411037439152575330738596343613170269621629934531241uwb;
  test575 (a, c, 0, &j[0]);
  if (s575[0].c != 74915286869691307910535753931416633675608326651216782655214347437885792615716349010228495093791076801730572987413666208183802410598889783023687426699732483562656666028609189uwb
      || s575[0].d != 67322626164534684432128142510263628633851970452429406664125475042690110884386765927066456699852665904022478919125681907729713202628765997176929559711053556150174518973540046uwb
      || j[0] != 0
      || j[1] != 1
      || v575 != 957446538841628005556782697277372214755225292234338746407969911426093601549542767136921707284650291002859873625214881579964754653531202313001246740598261075986212409306458uwb
      || c[10] != 123665200736552267030251260509823595017565674550605919957031528046448612553265933585158200530621522494798835713008069669675682517153375604983773077550946583958303386074349567uwb
      || c[12] != 75220429869217011726925627410386222828914704461374062956838137298086053563675773396398862712785704326025796787072801237857670637684180265176166591342670387141107429327169404uwb
      || c[14] != 75220429869217011726925627410386222828914704461374062956838137298086053563675773396398862712785704326025796787072801237857670637684180265176166591342670387141107429327169405uwb)
    __builtin_abort ();
}
#endif

int
main ()
{
#if __BITINT_MAXWIDTH__ >= 259
  check259 ();
#endif
#if __BITINT_MAXWIDTH__ >= 508
  check508 ();
#endif
#if __BITINT_MAXWIDTH__ >= 512
  check512 ();
#endif
#if __BITINT_MAXWIDTH__ >= 575
  check575 ();
#endif
  return 0;
}
